
/**********************************************************************************\
** 文件名称: heap.h
** 创建人员: YCG
** 创建日期: 2019-01-14
** 文档描述: 
** 版本代号: V0.1
** 版本说明: 初始版本
\********************************************************************************/
#ifndef __HEAP_H_
#define __HEAP_H_

#include	"main.h"
#include <stdint.h>
#include <string.h>

#define  USE_FREERTOS_HEAP

#ifndef  USE_FREERTOS_HEAP

#define HEAP_SIZE                 (1024*50)            //缓存空间的大小
#define HEAP_BYTE_ALIGNMENT			  (8)                  //多少字节对齐
#define HEAP_BYTE_ALIGNMENT_MASK  (0x0007)             //对齐掩模
#define HEAP_INIT_FLAG             0xFFFF0FFF          //对齐未初始化标志
#define HEAP_END_SIZE              0xFFFFFFFF          //对齐最后一个空闲块的大小，标志着结束
#define HEAP_STRUCT_SIZE	        (sizeof(Heap_t))     //内存块头部大小
#define HEAP_MINI_BLOCK_SIZE	    ( ( uint32_t ) ( HEAP_STRUCT_SIZE << 1 ) )      //最小划分的内存块大小

typedef struct HEAP_T
{
    struct HEAP_T *Next;	     //列表中的下一个空闲块。
    uint32_t Size;						 //此空闲块的大小。
} Heap_t;

void* MyMalloc(uint32_t ySize) ;
void MyFree(void *pv);
uint32_t GetHeapFreeBytes(void);
uint32_t GetHeapMinFreeBytes(void);
#else
#include	"FreeRTOS.h"

#define MyMalloc(xWantedSize)  pvPortMalloc(xWantedSize)
#define MyFree(pv)             vPortFree(pv)
#define GetHeapFreeBytes()     xPortGetFreeHeapSize()
#define GetHeapMinFreeBytes()  xPortGetMinimumEverFreeHeapSize()

#endif

void MyFreeUnuse(void *pv, uint32_t ySize);
#endif

/********************************End of File************************************/
